import { defineStore } from 'pinia' // 导入 pinia 中的功能模块

// 创建容器
// 参数一：容器名
// 参数二：容器的内容
const useMainStore =  defineStore('main', {
  // pinia 状态管理的数据，通过箭头函数返回一个对象
  // 相当于 vue 中的 data 数据
  state: () => {
    return {
      message1: 'Hello',
      message2: 'Pinia',
      count: 1,
      number: 666
    }
  },

  // 相当于 vue 中的 computed 计算属性
  getters: {
    // 定义的 getters，第一个参数就是该容器的 state
    comp(state) {
      return (num: number) => {
        return state.count + num
      }
    }
  },

  // 相当于 vue 中的 methods 方法
  actions: {
    // 1、count 加法方法
    addCount() {
      this.count++
    }
  }
})

const useProjectStore =  defineStore('project', {
  // pinia 状态管理的数据，通过箭头函数返回一个对象
  // 相当于 vue 中的 data 数据
  state: () => {
    return {
      username: 'liangshuang',
      age: 21
    }
  },

  // 相当于 vue 中的 computed 计算属性
  getters: {},

  // 相当于 vue 中的 methods 方法
  actions: {
    // 1、age 加法方法
    addAge() {
      // 实例化 pinia 容器
      const mainState = useMainStore()
      this.age += this.age + mainState.count
    }
  }
})

// 导出容器
export {
  useMainStore,
  useProjectStore
}